#if !defined(_APP_SERIAL)
#define _APP_SERIAL
#include <termio.h>
#include "app_device.h"
// 波特率枚举
typedef enum
{
    BR_9600 = B9600,
    BR_115200 = B115200
} SERIAL_BAUD_RATE;

// 校验位枚举
typedef enum
{
    PARITY_NONE = 0, // 无校验位
    PARITY_ODD = PARENB | PARODD, // 奇校验位
    PARITY_EVEN = PARENB, // 偶校验位
} SERIAL_PARITY;

// 停止位枚举
typedef enum
{
    STOP_BIT_ONE = 0, // 1位停止位
    STOP_BIT_TWO = CSTOPB, // 2位停止位
} SERIAL_STOP_BIT;

/**
 * @brief 串口初始化
 *
 * @return int 0:成功 -1:失败
 */
int app_serial_init(device_t *device);



/**
 * @brief 波特率设置
 * @param baud 波特率
 * @return int 0:成功 -1:失败
 */
int app_serial_set_baud(device_t *device,SERIAL_BAUD_RATE baud);

/**
 * @brief 校验位设置
 * @param parity 校验位
 * @return int 0:成功 -1:失败
 */
int app_serial_set_parity(device_t *device,SERIAL_PARITY parity);

/**	
 * @brief 停止位设置
 * @param stop 停止位
 * @return int 0:成功 -1:失败
 */
int app_serial_set_stop(device_t *device,SERIAL_STOP_BIT stop);

/**
 * @brief 设置原始模式
 * @return int 0:成功 -1:失败
 */
int app_serial_set_makeraw();

/**
 * @brief 设置是否阻塞模式
 * @param block 是否阻塞模式 1:阻塞模式 0:非阻塞模式
 * @return int 0:成功 -1:失败
 */
int app_serial_set_block(device_t *device,int block);


#endif // _APP_SERIAL
